Context aware traffic management for resource conservation in a wireless network

ABSTRACT

Systems and methods of context aware traffic management for network and device resource conservation are disclosed. In one aspect, embodiments of the present disclosure include a method, which may be implemented on a system, for using characteristics of user activity on the mobile device to locally adjust behavior of the mobile device to optimize battery consumption on the mobile device, using characteristics of user activity on the mobile device to locally adjust behavior of the mobile device to optimize battery consumption on the mobile device, and/or using characteristics of user activity on the mobile device to locally adjust behavior of the mobile device to optimize battery consumption on the mobile device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication No. 61/367,871 entitled “CONSERVING POWER CONSUMPTION INAPPLICATIONS WITH NETWORK INITIATED DATA TRANSFER FUNCTIONALITY”, whichwas filed on Jul. 26, 2010, U.S. Provisional Patent Application No.61/367,870 entitled “MANAGING AND IMPROVING NETWORK RESOURCEUTILIZATION, PERFORMANCE AND OPTIMIZING TRAFFIC IN WIRE LINE ANDWIRELESS NETWORKS WITH MOBILE CLIENTS”, which was filed on Jul. 26,2010, U.S. Provisional Patent Application No. 61/408,858 entitled “CROSSAPPLICATION TRAFFIC COORDINATION”, which was filed on Nov. 1, 2010, U.S.Provisional Patent Application No. 61/408,839 entitled “ACTIVITY SESSIONAS METHOD OF OPTIMIZING NETWORK RESOURCE USE”, which was filed on Nov.1, 2010, U.S. Provisional Patent Application No. 61/408,829 entitled“DISTRIBUTED POLICY MANAGEMENT”, which was filed on Nov. 1, 2010, U.S.Provisional Patent Application No. 61/408,846 entitled “INTELLIGENTCACHE MANAGEMENT IN CONGESTED WIRELESS NETWORKS”, which was filed onNov. 1, 2010, U.S. Provisional Patent Application No. 61/408,854entitled “INTELLIGENT MANAGEMENT OF NON-CACHEABLE CONTENT IN WIRELESSNETWORKS”, which was filed on Nov. 1, 2010, U.S. Provisional PatentApplication No. 61/408,826 entitled “ONE WAY INTELLIGENT HEARTBEAT”,which was filed on Nov. 1, 2010, U.S. Provisional Patent Application No.61/408,820 entitled “TRAFFIC CATEGORIZATION AND POLICY DRIVING RADIOSTATE”, which was filed on Nov. 1, 2010, U.S. Provisional PatentApplication No. 61/416,020 entitled “ALIGNING BURSTS FROM SERVER TOCLIENT”, which was filed on Nov. 22, 2010, U.S. Provisional PatentApplication No. 61/416,033 entitled “POLLING INTERVAL FUNCTIONS”, whichwas filed on Nov. 22, 2010, U.S. Provisional Patent Application No.61/430,828 entitled “DOMAIN NAME SYSTEM WITH NETWORK TRAFFICHARMONIZATION”, which was filed on Jan. 7, 2011, the contents of whichare all incorporated by reference herein.

BACKGROUND

When WCDMA was specified, there was little attention to requirementsposed by applications whose functions are based on actions initiated bythe network, in contrast to functions initiated by the user or by thedevice. Such applications include, for example, push email, instantmessaging, visual voicemail and voice and video telephony, and others.Such applications typically require an always-on IP connection andfrequent transmit of small bits of data. WCDMA networks are designed andoptimized for high-throughput of large amounts of data, not forapplications that require frequent, but low-throughput and/or smallamounts of data. Each transaction puts the mobile device radio in a highpower mode for considerable length of time—typically between 15-30seconds. As the high power mode can consume as much as 100× the power asan idle mode, these network-initiated applications quickly drain batteryin WCDMA networks. The issue has been exacerbated by the rapid increaseof popularity of applications with network-initiated functionalities,such as push email.

Lack of proper support has prompted a number of vendors to providedocuments to guide their operator partners and independent softwarevendors to configure their networks and applications to perform betterin WCDMA networks. This guidance focuses on: configuring networks to goto stay on high-power radio mode as short as possible and makingperiodic keep alive messages that are used to maintain an always-onTCP/IP connection as infrequent as possible. Such solutions typicallyassume lack of coordination between the user, the application and thenetwork.

Furthermore, application protocols may provide long-lived connectionsthat allow servers to push updated data to a mobile device without theneed of the client to periodically re-establish the connection or toperiodically query for changes. However, the mobile device needs to besure that the connection remains usable by periodically sending somedata, often called a keep-alive message, to the server and making surethe server is receiving this data. While the amount of data sent for asingle keep-alive is not a lot and the keep-alive interval for anindividual application is not too short, the cumulative effect ofmultiple applications performing this individually will amount to smallpieces of data being sent very frequently. Frequently sending bursts ofdata in a wireless network also result in high battery consumption dueto the constant need of powering/re-powering the radio module.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates an example diagram of a system where a host serverfacilitates management of traffic between client devices and anapplication server or content provider in a wireless network forresource conservation.

FIG. 1B illustrates an example diagram of a proxy and cache systemdistributed between the host server and device which facilitates networktraffic management between a device and an application server/contentprovider for resource conservation.

FIG. 2 depicts a block diagram illustrating an example of client-sidecomponents in a distributed proxy and cache system residing on a mobiledevice that manages traffic in a wireless network for resourceconservation.

FIG. 3 depicts a block diagram illustrating an example of server-sidecomponents in a distributed proxy and cache system that manages trafficin a wireless network for resource conservation.

FIG. 4 depicts a diagram showing how data requests from a mobile deviceto an application server/content provider in a wireless network can becoordinated by a distributed proxy system in a manner such that networkand battery resources are conserved through using content caching andmonitoring performed by the distributed proxy system.

FIG. 5 depicts a diagram showing one example process for implementing ahybrid IP and SMS power saving mode on a mobile device using adistributed proxy and cache system (e.g., such as the distributed systemshown in the example of FIG. 1B).

FIG. 6 depicts a flow chart illustrating example processes through whichcontext awareness is used for traffic management.

FIG. 7 depicts a flow chart illustrating an example process for managingtraffic in a wireless network based on user interaction with a mobiledevice.

FIG. 8 depicts a flow chart illustrating another example process formanaging traffic in a wireless network based on user interaction with amobile device.

FIG. 9 depicts a flow chart illustrating an example process for managingtraffic initiated from a mobile device in a wireless network throughbatching of event transfer based on event priority.

FIG. 10 depicts a flow chart illustrating another example process formanaging traffic initiated remotely from a mobile device in a wirelessnetwork through batching of event transfer based on event priority.

FIG. 11 shows a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed.

DETAILED DESCRIPTION

The following description and drawings are illustrative and are not tobe construed as limiting. Numerous specific details are described toprovide a thorough understanding of the disclosure. However, in certaininstances, well-known or conventional details are not described in orderto avoid obscuring the description. References to one or an embodimentin the present disclosure can be, but not necessarily are, references tothe same embodiment; and, such references mean at least one of theembodiments.

Reference in this specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the disclosure. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment, nor are separate or alternative embodimentsmutually exclusive of other embodiments. Moreover, various features aredescribed which may be exhibited by some embodiments and not by others.Similarly, various requirements are described which may be requirementsfor some embodiments but not other embodiments.

The terms used in this specification generally have their ordinarymeanings in the art, within the context of the disclosure, and in thespecific context where each term is used. Certain terms that are used todescribe the disclosure are discussed below, or elsewhere in thespecification, to provide additional guidance to the practitionerregarding the description of the disclosure. For convenience, certainterms may be highlighted, for example using italics and/or quotationmarks. The use of highlighting has no influence on the scope and meaningof a term; the scope and meaning of a term is the same, in the samecontext, whether or not it is highlighted. It will be appreciated thatsame thing can be said in more than one way.

Consequently, alternative language and synonyms may be used for any oneor more of the terms discussed herein, nor is any special significanceto be placed upon whether or not a term is elaborated or discussedherein. Synonyms for certain terms are provided. A recital of one ormore synonyms does not exclude the use of other synonyms. The use ofexamples anywhere in this specification including examples of any termsdiscussed herein is illustrative only, and is not intended to furtherlimit the scope and meaning of the disclosure or of any exemplifiedterm. Likewise, the disclosure is not limited to various embodimentsgiven in this specification.

Without intent to limit the scope of the disclosure, examples ofinstruments, apparatus, methods and their related results according tothe embodiments of the present disclosure are given below. Note thattitles or subtitles may be used in the examples for convenience of areader, which in no way should limit the scope of the disclosure. Unlessotherwise defined, all technical and scientific terms used herein havethe same meaning as commonly understood by one of ordinary skill in theart to which this disclosure pertains. In the case of conflict, thepresent document, including definitions will control.

Embodiments of the present disclosure include systems and methods forcontext aware traffic management for network and device resourceconservation.

One embodiment of the disclosed technology includes, a system thatoptimizes multiple aspects of the connection with wired and wirelessnetworks and devices through a comprehensive view of device andapplication activity including: loading, current application needs on adevice, controlling the type of access (push vs. pull or hybrid),location, concentration of users in a single area, time of day, howoften the user interacts with the application, content or device, andusing this information to shape traffic to a cooperative client/serveror simultaneously mobile devices without a cooperative client. Becausethe disclosed server is not tied to any specific network provider it hasvisibility into the network performance across all service providers.This enables optimizations to be applied to devices regardless of theoperator or service provider, thereby enhancing the user experience andmanaging network utilization while roaming. Bandwidth has beenconsidered a major issue in wireless networks today. More and moreresearch has been done related to the need for additional bandwidth tosolve access problems—many of the performance enhancing solutions andnext generation standards, such as those commonly referred to as 4G,namely LTE, 4G, and WiMAX are focused on providing increased bandwidth.Although partially addressed by the standards a key problem that remainsis lack of bandwidth on the signaling channel more so than the datachannel. Embodiments of the disclosed technology includes, for example,alignment of requests from multiple applications to minimize the needfor several polling requests; leverage specific content types todetermine how to proxy/manage a connection/content; and apply specificheuristics associated with device, user behavioral patterns (how oftenthey interact with the device/application) and/or network parameters.

Embodiments of the present technology can further include, movingrecurring HTTP polls performed by various widgets, RSS readers, etc., toremote network node (e.g., Network operation center (NOC)), thusconsiderably lowering device battery/power consumption, radio channelsignaling, and bandwidth usage. Additionally, the offloading can beperformed transparently so that existing applications do not need to bechanged.

In some embodiments, this can be implemented using a local proxy on themobile device which automatically detects recurring requests for thesame content (RSS feed, Widget data set) that matches a specific rule(e.g. happens every 15 minutes). The local proxy can automatically cachethe content on the mobile device while delegating the polling to theserver (e.g., a proxy server operated as an element of a communicationsnetwork). The server can then notify the mobile/client proxy if thecontent changes, and if content has not changed (or not changedsufficiently, or in an identified manner or amount) the mobile proxyprovides the latest version in its cache to the user (without need toutilize the radio at all). This way the mobile device (e.g., a mobilephone, smart phone, etc.) does not need to open up (e.g., thus poweringon the radio) or use a data connection if the request is for contentthat is monitored and that has been not flagged as new, changed, orotherwise different.

The logic for automatically adding content sources/application servers(e.g., including URLs/content) to be monitored can also check forvarious factors like how often the content is the same, how often thesame request is made (is there a fixed interval/pattern?), whichapplication is requesting the data, etc. Similar rules to decide betweenusing the cache and request the data from the original source may alsobe implemented and executed by the local proxy and/or server.

For example, when the request comes at an unscheduled/unexpected time(user initiated check), or after every (n) consecutive times theresponse has been provided from the cache, etc., or if the applicationis running in the background vs. in a more interactive mode of theforeground. As more and more mobile applications base their features onresources available in the network, this becomes increasingly important.In addition, the disclosed technology allows elimination of unnecessarychatter from the network, benefiting the operators trying to optimizethe wireless spectrum usage.

FIG. 1A illustrates an example diagram of a system where a host server100 facilitates management of traffic between client devices 102 and anapplication server or content provider 110 in a wireless network forresource conservation.

The client devices 102A-D can be any system and/or device, and/or anycombination of devices/systems that is able to establish a connection,including wired, wireless, cellular connections with another device, aserver and/or other systems such as host server 100 and/or applicationserver/content provider 110. Client devices 102 will typically include adisplay and/or other output functionalities to present information anddata exchanged between among the devices 102 and/or the host server 100and/or application server/content provider 110.

For example, the client devices 102 can include mobile, hand held orportable devices or non-portable devices and can be any of, but notlimited to, a server desktop, a desktop computer, a computer cluster, orportable devices including, a notebook, a laptop computer, a handheldcomputer, a palmtop computer, a mobile phone, a cell phone, a smartphone, a PDA, a Blackberry device, a Palm device, a handheld tablet(e.g. an iPad or any other tablet), a hand held console, a hand heldgaming device or console, any SuperPhone such as the iPhone, and/or anyother portable, mobile, hand held devices, etc. In one embodiment, theclient devices 102, host server 100, and app server 110 are coupled viaa network 106 and/or a network 108. In some embodiments, the devices 102and host server 100 may be directly connected to one another.

The input mechanism on client devices 102 can include touch screenkeypad (including single touch, multi-touch, gesture sensing in 2D or3D, etc.), a physical keypad, a mouse, a pointer, a track pad, motiondetector (e.g., including 1-axis, 2-axis, 3-axis accelerometer, etc.), alight sensor, capacitance sensor, resistance sensor, temperature sensor,proximity sensor, a piezoelectric device, device orientation detector(e.g., electronic compass, tilt sensor, rotation sensor, gyroscope,accelerometer), or a combination of the above.

Signals received or detected indicating user activity at client devices102 through one or more of the above input mechanism, or others, can beused in the disclosed technology in acquiring context awareness at theclient device 102. Context awareness at client devices 102 generallyincludes, by way of example but not limitation, client device 102operation or state acknowledgement, management, useractivity/behavior/interaction awareness, detection, sensing, tracking,trending, and/or application (e.g., mobile applications) type, behavior,activity, operating state, etc.

Context awareness in the present disclosure also includes knowledge anddetection of network side contextual data and can include networkinformation such as network capacity, bandwidth, traffic, type ofnetwork/connectivity, and/or any other operational state data. Networkside contextual data can be received from and/or queried from networkservice providers (e.g., cell provider 112 and/or Internet serviceproviders) of the network 106 and/or network 108 (e.g., by the hostserver and/or devices 102). In addition to application context awarenessas determined from the client 102 side, the application contextawareness may also be received from or obtained/queried from therespective application/service providers 110 (by the host 100 and/orclient devices 102).

The host server 100 can use, for example, contextual informationobtained for client devices 102, networks 106/108, applications (e.g.,mobile applications), application server/provider 110, or anycombination of the above, to manage the traffic in the system to satisfydata needs of the client devices 102 (e.g., to satisfy application orany other request including HTTP request). In one embodiment, thetraffic is managed by the host server 100 to satisfy data requests madein response to explicit or non-explicit user 103 requests and/ordevice/application maintenance tasks. The traffic can be managed suchthat network consumption, for example, use of the cellular network isconserved for effective and efficient bandwidth utilization. Inaddition, the host server 100 can manage and coordinate such traffic inthe system such that use of device 102 side resources (e.g., includingbut not limited to battery power consumption, radio use,processor/memory use) are optimized with a general philosophy forresource conservation while still optimizing performance and userexperience.

For example, in context of battery conservation, the device 150 canobserve user activity (for example, by observing user keystrokes,backlight status, or other signals via one or more input mechanisms,etc.) and alters device 102 behaviors. The device 150 can also requestthe host server 100 to alter the behavior for network resourceconsumption based on user activity or behavior.

In one embodiment, the traffic management for resource conservation isperformed using a distributed system between the host server 100 andclient device 102. The distributed system can include proxy server andcache components on the server 100 side and on the client 102 side, forexample, as shown by the server cache 135 on the server 100 side and thelocal cache 150 on the client 102 side.

Functions and techniques disclosed for context aware traffic managementfor resource conservation in networks (e.g., network 106 and/or 108) anddevices 102, reside in a distributed proxy and cache system. The proxyand cache system can be distributed between, and reside on, a givenclient device 102 in part or in whole and/or host server 100 in part orin whole. The distributed proxy and cache system are illustrated withfurther reference to the example diagram shown in FIG. 1B. Functions andtechniques performed by the proxy and cache components in the clientdevice 102, the host server 100, and the related components therein aredescribed, respectively, in detail with further reference to theexamples of FIG. 2-3.

In one embodiment, client devices 102 communicate with the host server100 and/or the application server 110 over network 106, which can be acellular network. To facilitate overall traffic management betweendevices 102 and various application servers/content providers 110 toimplement network (bandwidth utilization) and device resource (e.g.,battery consumption), the host server 100 can communicate with theapplication server/providers 110 over the network 108, which can includethe Internet.

In general, the networks 106 and/or 108, over which the client devices102, the host server 100, and/or application server 110 communicate, maybe a cellular network, a telephonic network, an open network, such asthe Internet, or a private network, such as an intranet and/or theextranet, or any combination thereof. For example, the Internet canprovide file transfer, remote log in, email, news, RSS, cloud-basedservices, instant messaging, visual voicemail, push mail, VoIP, andother services through any known or convenient protocol, such as, but isnot limited to the TCP/IP protocol, UDP, HTTP, DNS, Open SystemInterconnections (OSI), FTP, UPnP, iSCSI, NSF, ISDN, PDH, RS-232, SDH,SONET, etc. Open System Interconnections (OSI), FTP, UPnP, iSCSI, NSF,ISDN, PDH, RS-232, SDH, SONET, etc.

The networks 106 and/or 108 can be any collection of distinct networksoperating wholly or partially in conjunction to provide connectivity tothe client devices 102 and the host server 100 and may appear as one ormore networks to the serviced systems and devices. In one embodiment,communications to and from the client devices 102 can be achieved by, anopen network, such as the Internet, or a private network, such as anintranet and/or the extranet. In one embodiment, communications can beachieved by a secure communications protocol, such as secure socketslayer (SSL), or transport layer security (TLS).

In addition, communications can be achieved via one or more networks,such as, but are not limited to, one or more of WiMax, a Local AreaNetwork (LAN), Wireless Local Area Network (WLAN), a Personal areanetwork (PAN), a Campus area network (CAN), a Metropolitan area network(MAN), a Wide area network (WAN), a Wireless wide area network (WWAN),enabled with technologies such as, by way of example, Global System forMobile Communications (GSM), Personal Communications Service (PCS),Digital Advanced Mobile Phone Service (D-Amps), Bluetooth, Wi-Fi, FixedWireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, 3G LTE, 3GPP LTE,LTE Advanced, mobile WiMax, WiMax 2, WirelessMAN-Advanced networks,enhanced data rates for GSM evolution (EDGE), General packet radioservice (GPRS), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA,UMTS-TDD, 1xRTT, EV-DO, messaging protocols such as, TCP/IP, SMS, MMS,extensible messaging and presence protocol (XMPP), real time messagingprotocol (RTMP), instant messaging and presence protocol (IMPP), instantmessaging, USSD, IRC, or any other wireless data networks or messagingprotocols.

FIG. 1B illustrates an example diagram of a proxy and cache systemdistributed between the host server 100 and device 150 which facilitatesnetwork traffic management between the device 150 and an applicationserver/content provider 100 (e.g., a source server) for resourceconservation.

The distributed proxy and cache system can include, for example, theproxy server 125 (e.g., remote proxy) and the server cache, 135components on the server side. The server-side proxy 125 and cache 135can, as illustrated, reside internal to the host server 100. Inaddition, the proxy server 125 and cache 135 on the server-side can bepartially or wholly external to the host server 100 and in communicationvia one or more of the networks 106 and 108. For example, the proxyserver 125 may be external to the host server and the server cache 135may be maintained at the host server 100. Alternatively, the proxyserver 125 may be within the host server 100 while the server cache isexternal to the host server 100. In addition, each of the proxy server125 and the cache 135 may be partially internal to the host server 100and partially external to the host server 100.

The distributed system can also, include, in one embodiment, client-sidecomponents, including by way of example but not limitation, a localproxy 175 (e.g., a mobile client on a mobile device) and/or a localcache 185, which can, as illustrated, reside internal to the device 150(e.g., a mobile device).

In addition, the client-side proxy 175 and local cache 185 can bepartially or wholly external to the device 150 and in communication viaone or more of the networks 106 and 108. For example, the local proxy175 may be external to the device 150 and the local cache 185 may bemaintained at the device 150. Alternatively, the local proxy 175 may bewithin the device 150 while the local cache 185 is external to thedevice 150. In addition, each of the proxy 175 and the cache 185 may bepartially internal to the host server 100 and partially external to thehost server 100.

In one embodiment, the distributed system can include an optionalcaching proxy server 199. The caching proxy server 199 can be acomponent which is operated by the application server/content provider110, the host server 100, or a network service provider 112, and or anycombination of the above to facilitate network traffic management fornetwork and device resource conservation. Proxy server 199 can be used,for example, for caching content to be provided to the device 150, forexample, from one or more of, the application server/provider 110, hostserver 100, and/or a network service provider 112. Content caching canalso be entirely or partially performed by the remote proxy 125 tosatisfy application requests or other data requests at the device 150.

In context aware traffic management and optimization for resourceconservation in a network (e.g., cellular or other wireless networks),characteristics of user activity/behavior and/or application behavior ata mobile device 150 can be tracked by the local proxy 175 andcommunicated, over the network 106 to the proxy server 125 component inthe host server 100, for example, as connection metadata. The proxyserver 125 which in turn is coupled to the application server/provider110 provides content and data to satisfy requests made at the device150.

In addition, the local proxy 175 can identify and retrieve mobile deviceproperties including, one or more of, battery level, network that thedevice is registered on, radio state, whether the mobile device is beingused (e.g., interacted with by a user). In some instances, the localproxy 175 can delay, expedite (prefetch), and/or modify data prior totransmission to the proxy server 125, when appropriate, as will befurther detailed with references to the description associated with theexamples of FIG. 2-3.

The local database 185 can be included in the local proxy 175 or coupledto the proxy 175 and can be queried for a locally stored response to thedata request prior to the data request being forwarded on to the proxyserver 125. Locally cached responses can be used by the local proxy 175to satisfy certain application requests of the mobile device 150, byretrieving cached content stored in the cache storage 185, when thecached content is still valid.

Similarly, the proxy server 125 of the host server 100 can also delay,expedite, or modify data from the local proxy prior to transmission tothe content sources (e.g., the app server/content provider 110). Inaddition, the proxy server 125 uses device properties and connectionmetadata to generate rules for satisfying request of applications on themobile device 150. The proxy server 125 can gather real time trafficinformation about requests of applications for later use in optimizingsimilar connections with the mobile device 150 or other mobile devices.

In general, the local proxy 175 and the proxy server 125 are transparentto the multiple applications executing on the mobile device. The localproxy 175 is generally transparent to the operating system or platformof the mobile device and may or may not be specific to devicemanufacturers. For example, the local proxy can be implemented withoutadding a TCP stack and thus act transparently to both the US and themobile applications. In some instances, the local proxy 175 isoptionally customizable in part or in whole to be device specific. Insome embodiments, the local proxy 175 may be bundled into a wirelessmodel, into a firewall, and/or a router.

In one embodiment, the host server 100 can in some instances, utilizethe store and forward functions of a short message service center (SMSC)112, such as that provided by the network service provider 112, incommunicating with the device 150 in achieving network trafficmanagement. As will be further described with reference to the exampleof FIG. 3, the host server 100 can forward content or HTTP responses tothe SMSC 112 such that it is automatically forwarded to the device 150if available, and for subsequent forwarding if the device 150 is notcurrently available.

In general, the disclosed distributed proxy and cache system allowsoptimization of network usage, for example, by serving requests from thelocal cache 185, the local proxy 175 reduces the number of requests thatneed to be satisfied over the network 106. Further, the local proxy 175and the proxy server 125 may filter irrelevant data from thecommunicated data. In addition, the local proxy 175 and the proxy server125 can also accumulate low priority data and send it in batches toavoid the protocol overhead of sending individual data fragments. Thelocal proxy 175 and the proxy server 125 can also compress or transcodethe traffic, reducing the amount of data sent over the network 106and/or 108. The signaling traffic in the network 106 and/or 108 can bereduced, as the networks are now used less often and the network trafficcan be synchronized among individual applications.

With respect to the battery life of the mobile device 150, by servingapplication or content requests from the local cache 185, the localproxy 175 can reduce the number of times the radio module is powered up.The local proxy 175 and the proxy server 125 can work in conjunction toaccumulate low priority data and send it in batches to reduce the numberof times and/or amount of time when the radio is powered up. The localproxy 175 can synchronize the network use by performing the batched datatransfer for all connections simultaneously.

FIG. 2 depicts a block diagram illustrating an example of client-sidecomponents in a distributed proxy and cache system residing on a device250 that manages traffic in a wireless network for resourceconservation.

The device 250, which can be a portable or mobile device, such as aportable phone, generally includes, for example, a network interface208, an operating system 204, a context API 206, and mobile applicationswhich may be proxy unaware 210 or proxy aware 220. Note that the device250 is specifically illustrated in the example of FIG. 2 as a mobiledevice, such is not a limitation and that device 250 may be anyportable/mobile or non-portable device able to receive, transmit signalsto satisfy data requests over a network including wired or wirelessnetworks (e.g., WiFi, cellular, Bluetooth, etc.).

The network interface 208 can be a networking module that enables thedevice 250 to mediate data in a network with an entity that is externalto the host server 250, through any known and/or convenientcommunications protocol supported by the host and the external entity.The network interface 208 can include one or more of a network adaptorcard, a wireless network interface card (e.g., SMS interface, WiFiinterface, interfaces for various generations of mobile communicationstandards including but not limited to 1G, 2G, 3G, 3.5G, 4G, LTE,etc.,), Bluetooth, or whether or not the connection is via a router, anaccess point, a wireless router, a switch, a multilayer switch, aprotocol converter, a gateway, a bridge, bridge router, a hub, a digitalmedia receiver, and/or a repeater.

Device 250 can further include, client-side components of thedistributed proxy and cache system which can include, a local proxy 275(e.g., a mobile client of a mobile device) and a cache 285. In oneembodiment, the local proxy 275 includes a user activity module 215, aproxy API 225, a request/transaction manager 235, a caching policymanager 245, a traffic shaping engine 255, and/or a connection manager265. The traffic shaping engine 255 may further include an alignmentmodule 256 and/or a batching module 257, the connection manager 265 mayfurther include a radio controller 266. The request/transaction manager235 can further include an application behavior detector 236 and/or aprioritization engine 238, the application behavior detector 236 mayfurther include a pattern detector 237 and/or and application profilegenerator 238. Additional or less components/modules/engines can beincluded in the local proxy 275 and each illustrated component.

As used herein, a “module,” “a manager,” a “handler,” a “detector,” an“interface,” or an “engine” includes a general purpose, dedicated orshared processor and, typically, firmware or software modules that areexecuted by the processor. Depending upon implementation-specific orother considerations, the module, manager, hander, or engine can becentralized or its functionality distributed. The module, manager,hander, or engine can include general or special purpose hardware,firmware, or software embodied in a computer-readable (storage) mediumfor execution by the processor. As used herein, a computer-readablemedium or computer-readable storage medium is intended to include allmediums that are statutory (e.g., in the United States, under 35 U.S.C.101), and to specifically exclude all mediums that are non-statutory innature to the extent that the exclusion is necessary for a claim thatincludes the computer-readable (storage) medium to be valid. Knownstatutory computer-readable mediums include hardware (e.g., registers,random access memory (RAM), non-volatile (NV) storage, to name a few),but may or may not be limited to hardware.

In one embodiment, a portion of the distributed proxy and cache systemfor network traffic management resides in or is in communication withdevice 250, including local proxy 275 (mobile client) and/or cache 285.The local proxy 275 can provide an interface on the device 150 for usersto access device applications and services including email, IM, voicemail, visual voicemail, feeds, Internet, other applications, etc.

The proxy 275 is generally application independent and can be used byapplications (e.g., both proxy aware and proxy-unaware mobileapplications 210 and 220) to open TCP connections to a remote server(e.g., the server 100 in the examples of FIG. 1A-1B and/or server proxy125/325 shown in the examples of FIG. 1B and FIG. 3). In some instances,the local proxy 275 includes a proxy API 225 which can be optionallyused to interface with proxy-aware applications 220 (or mobileapplications on a mobile device).

The applications 210 and 220 can generally include any user application,widgets, software, HTTP-based application, web browsers, video or othermultimedia streaming or downloading application, video games, socialnetwork applications, email clients, RSS management applications,application stores, document management applications, productivityenhancement applications, etc. The applications can be provided with thedevice OS, by the device manufacturer, by the network service provider,downloaded by the user, or provided by others.

One embodiment of the local proxy 275 includes or is coupled to acontext API 206, as shown. The context API 206 may be a part of theoperating system 204 or device platform or independent of the operatingsystem 204, as illustrated. The operating system 204 can include anyoperating system including but not limited to, any previous, current,and/or future versions/releases of, Windows Mobile, iOS, Android,Symbian, Palm OS, Brew MP, Java 2 Micro Edition (J2ME), Blackberry, etc.

The context API 206 may be a plug-in to the operating system 204 or aparticular client application on the device 250. The context API 206 candetect signals indicative of user or device activity, for example,sensing motion, gesture, device location, changes in device location,device backlight, keystrokes, clicks, activated touch screen, mouseclick or detection of other pointer devices. The context API 206 can becoupled to input devices or sensors on the device 250 to identify thesesignals. Such signals can generally include input received in responseto explicit user input at an input device/mechanism at the device 250and/or collected from ambient signals/contextual cues detected at or inthe vicinity of the device 250 (e.g., light, motion, piezoelectric,etc.).

In one embodiment, the user activity module 215 interacts with thecontext API 206 to identify, determine, infer, detect, compute, predict,and/or anticipate, characteristics of user activity on the device 250.Various inputs collected by the context API 206 can be aggregated by theuser activity module 215 to generate a profile for characteristics ofuser activity. Such a profile can be generated by the module 215 withvarious temporal characteristics. For instance, user activity profilecan be generated in real-time for a given instant to provide a view ofwhat the user is doing or not doing at a given time (e.g., defined by atime window, in the last minute, in the last 30 seconds, etc.), a useractivity profile can also be generated for a ‘session’ defined by anapplication or web page that describes the characteristics of userbehavior with respect to a specific task they are engaged in on thedevice 250, or for a specific time period (e.g., for the last 2 hours,for the last 5 hours).

Additionally, characteristic profiles can be generated by the useractivity module 215 to depict a historical trend for user activity andbehavior (e.g. 1 week, 1 mo, 2 mo, etc.). Such historical profiles canalso be used to deduce trends of user behavior, for example, accessfrequency at different times of day, trends for certain days of the week(weekends or week days), user activity trends based on location data(e.g., IP address, GPS, or cell tower coordinate data) or changes inlocation data (e.g., user activity based on user location, or useractivity based on whether the user is on the go, or traveling outside ahome region, etc.) to obtain user activity characteristics.

In one embodiment, user activity module 215 can detect and track useractivity with respect to applications, documents, files, windows, icons,and folders on the device 250. For example, the user activity module 215can detect when an application or window (e.g., a web browser) has beenexited, closed, minimized, maximized, opened, moved into the foreground,or into the background, multimedia content playback, etc.

In one embodiment, characteristics of the user activity on the device250 can be used to locally adjust behavior of the device (e.g., mobiledevice) to optimize its resource consumption such as battery/powerconsumption and more generally, consumption of other device resourcesincluding memory, storage, and processing power. In one embodiment, theuse of a radio on a device can be adjusted based on characteristics ofuser behavior (e.g., by the radio controller 266 of the connectionmanager 265) coupled to the user activity module 215. For example, theradio controller 266 can turn the radio on or off, based oncharacteristics of the user activity on the device 250. In addition, theradio controller 266 can adjust the power mode of the radio (e.g., to bein a higher power mode or lower power mode) depending on characteristicsof user activity.

In one embodiment, characteristics of the user activity on device 250can also be used to cause another device (e.g., other computers, amobile device, or a non-portable device) or server (e.g., host server100 and 300 in the examples of FIG. 1A-B and FIG. 3) which cancommunicate (e.g., via a cellular or other network) with the device 250to modify its communication frequency with the device 250. The localproxy 275 can use the characteristics information of user behaviordetermined by the user activity module 215 to instruct the remote deviceas to how to modulate its communication frequency (e.g., decreasingcommunication frequency, such as data push frequency if the user isidle, requesting that the remote device notify the device 250 if newdata, changed data, different data, or data of a certain level ofimportance becomes available, etc.).

In one embodiment, the user activity module 215 can, in response todetermining that user activity characteristics indicate that a user isactive after a period of inactivity, request that a remote device (e.g.,server host server 100 and 300 in the examples of FIG. 1A-B and FIG. 3)send the data that was buffered as a result of the previously decreasedcommunication frequency.

In addition, or in alternative, the local proxy 275 can communicate thecharacteristics of user activity at the device 250 to the remote device(e.g., host server 100 and 300 in the examples of FIG. 1A-B and FIG. 3)and the remote device determines how to alter its own communicationfrequency with the device 250 for network resource conservation andconservation of device 250 resources.

One embodiment of the local proxy 275 further includes arequest/transaction manager 235, which can detect, identify, intercept,process, manage, data requests initiated on the device 250, for example,by applications 210 and/or 220, and/or directly/indirectly by a userrequest. The request/transaction manager 235 can determine how and whento process a given request or transaction, or a set ofrequests/transactions, based on transaction characteristics.

The request/transaction manager 235 can prioritize requests ortransactions made by applications and/or users at the device 250, forexample by the prioritization engine 238. Importance or priority ofrequests/transactions can be determined by the manager 235 by applying arule set, for example, according to time sensitivity of the transaction,time sensitivity of the content in the transaction, time criticality ofthe transaction, time criticality of the data transmitted in thetransaction, and/or time criticality or importance of an applicationmaking the request.

In addition, transaction characteristics can also depend on whether thetransaction was a result of user-interaction or other user initiatedaction on the device (e.g., user interaction with a mobile application).In general, a time critical transaction can include a transactionresulting from a user-initiated data transfer, and can be prioritized assuch. Transaction characteristics can also depend on the amount of datathat will be transferred or is anticipated to be transferred as a resultof the request/requested transaction. For example, the connectionmanager 265, can adjust the radio mode (e.g., high power or low powermode via the radio controller 266) based on the amount of data that willneed to be transferred.

In addition, the radio controller 266/connection manager 265 can adjustthe radio power mode (high or low) based on time criticality/sensitivityof the transaction. The radio controller 266 can trigger the use of highpower radio mode when a time-critical transaction (e.g., a transactionresulting from a user-initiated data transfer, an application running inthe foreground, any other event meeting a certain criteria) is initiatedor detected.

In general, the priorities can be set by default, for example, based ondevice platform, device manufacturer, operating system, etc. Prioritiescan alternatively or in additionally be set by the particularapplication; for example, the Facebook mobile application can set itsown priorities for various transactions (e.g., a status update can be ofhigher priority than an add friend request or a poke request, a messagesend request can be of higher priority than a message delete request,for example), an email client or IM chat client may have its ownconfigurations for priority. The prioritization engine 238 may includeset of rules for assigning priority.

The priority engine 238 can also track network provider limitations orspecifications on application or transaction priority in determining anoverall priority status for a request/transaction. Furthermore, prioritycan in part or in whole be determined by user preferences, eitherexplicit or implicit. A user, can in general, set priorities atdifferent tiers, such as, specific priorities for sessions, or types, orapplications (e.g., a browsing session, a gaming session, versus an IMchat session, the user may set a gaming session to always have higherpriority than an IM chat session, which may have higher priority thanweb-browsing session). A user can set application-specific priorities,(e.g., a user may set Facebook related transactions to have a higherpriority than LinkedIn related transactions), for specific transactiontypes (e.g., for all send message requests across all applications tohave higher priority than message delete requests, for allcalendar-related events to have a high priority, etc.), and/or forspecific folders.

The priority engine 238 can track and resolve conflicts in prioritiesset by different entities. For example, manual settings specified by theuser may take precedence over device OS settings, network providerparameters/limitations (e.g., set in default for a network service area,geographic locale, set for a specific time of day, or set based onservice/fee type) may limit any user-specified settings and/orapplication-set priorities. In some instances, a manual sync requestreceived from a user can override some, most, or all priority settingsin that the requested synchronization is performed when requested,regardless of the individually assigned priority or an overall priorityranking for the requested action.

Priority can be specified and tracked internally in any known and/orconvenient manner, including but not limited to, a binaryrepresentation, a multi-valued representation, a graded representationand all are considered to be within the scope of the disclosedtechnology.

TABLE I Change Change (initiated on device) Priority (initiated onserver) Priority Send email High Receive email High Delete email LowEdit email Often not possible (Un)read email Low to sync (Low if Movemessage Low possible) Read more High New email in deleted Low Down loadHigh items attachment Delete an email Low New Calendar event High(Un)Read an email Low Edit/change High Move messages Low Calendar eventAny calendar change High Add a contact High Any contact change High Edita contact High Wipe/lock device High Search contacts High Settingschange High Change a setting High Any folder change High Manualsend/receive High Connector restart High (if no IM status change Mediumchanges nothing Auction outbid or High is sent) change notificationSocial Network Medium Weather Updates Low Status Updates Sever WeatherAlerts High News Updates Low

Table I above shows, for illustration purposes, some examples oftransactions with examples of assigned priorities in a binaryrepresentation scheme. Additional assignments are possible foradditional types of events, requests, transactions, and as previouslydescribed, priority assignments can be made at more or less granularlevels, e.g., at the session level or at the application level, etc.

As shown by way of example in the above table, in general, lowerpriority requests/transactions can include, updating message status asbeing read, unread, deleting of messages, deletion of contacts; higherpriority requests/transactions, can in some instances include, statusupdates, new IM chat message, new email, calendar eventupdate/cancellation/deletion, an event in a mobile gaming session, orother entertainment related events, a purchase confirmation through aweb purchase or online, request to load additional or download content,contact book related events, a transaction to change a device setting,location-aware or location-based events/transactions, or any otherevents/request/transactions initiated by a user or where the user isknown to be, expected to be, or suspected to be waiting for a response,etc.

Inbox pruning events (e.g., email, or any other types of messages), aregenerally considered low priority and absent other impending events,generally will not trigger use of the radio on the device 250.Specifically, pruning events to remove old email or other content can be‘piggy backed’ with other communications if the radio is not otherwiseon, at the time of a scheduled pruning event. For example, if the userhas preferences set to ‘keep messages for 7 days old,’ then instead ofpowering on the device radio to initiate a message delete from thedevice 250 the moment that the message has exceeded 7 days old, themessage is deleted when the radio is powered on next. If the radio isalready on, then pruning may occur as regularly scheduled.

The request/transaction manager 235, can use the priorities for requests(e.g., by the prioritization engine 238) to manage outgoing traffic fromthe device 250 for resource optimization (e.g., to utilize the deviceradio more efficiently for battery conservation). For example,transactions/requests below a certain priority ranking may not triggeruse of the radio on the device 250 if the radio is not already switchedon, as controlled by the connection manager 265. In contrast, the radiocontroller 266 can turn on the radio such a request can be sent when arequest for a transaction is detected to be over a certain prioritylevel.

In one embodiment, priority assignments (such as that determined by thelocal proxy 275 or another device/entity) can be used cause a remotedevice to modify its communication with the frequency with the mobiledevice. For example, the remote device can be configured to sendnotifications to the device 250 when data of higher importance isavailable to be sent to the mobile device.

In one embodiment, transaction priority can be used in conjunction withcharacteristics of user activity in shaping or managing traffic, forexample, by the traffic shaping engine 255. For example, the trafficshaping engine 255 can, in response to detecting that a user is dormantor inactive, wait to send low priority transactions from the device 250,for a period of time. In addition, the traffic shaping engine 255 canallow multiple low priority transactions to accumulate for batchtransferring from the device 250 (e.g., via the batching module 257). Inone embodiment, the priorities can be set, configured, or readjusted bya user. For example, content depicted in Table I in the same or similarform can be accessible in a user interface on the device 250 and forexample, used by the user to adjust or view the priorities.

The batching module 257 can initiate batch transfer based on certaincriteria. For example, batch transfer (e.g., of multiple occurrences ofevents, some of which occurred at different instances in time) may occurafter a certain number of low priority events have been detected, orafter an amount of time elapsed after the first of the low priorityevent was initiated. In addition, the batching module 257 can initiatebatch transfer of the cumulated low priority events when a higherpriority event is initiated or detected at the device 250. Batchtransfer can otherwise be initiated when radio use is triggered foranother reason (e.g., to receive data from a remote device such as hostserver 100 or 300). In one embodiment, an impending pruning event(pruning of an inbox), or any other low priority events, can be executedwhen a batch transfer occurs.

In general, the batching capability can be disabled or enabled at theevent/transaction level, application level, or session level, based onany one or combination of the following: user configuration, devicelimitations/settings, manufacturer specification, network providerparameters/limitations, platform specific limitations/settings, deviceOS settings, etc. In one embodiment, batch transfer can be initiatedwhen an application/window/file is closed out, exited, or moved into thebackground; users can optionally be prompted before initiating a batchtransfer; users can also manually trigger batch transfers.

In one embodiment, the local proxy 275 locally adjusts radio use on thedevice 250 by caching data in the cache 285. When requests ortransactions from the device 250 can be satisfied by content stored inthe cache 285, the radio controller 266 need not activate the radio tosend the request to a remote entity (e.g., the host server 100, 300, asshown in FIG. 1 and FIG. 3 or a content provider/application server suchas the server/provider 110 shown in the examples of FIG. 1A and FIG.1B). As such, the local proxy 275 can use the local cache 285 and thecache policy manager 245 to locally store data for satisfying datarequests to eliminate or reduce the use of the device radio forconservation of network resources and device battery consumption.

In leveraging the local cache, once the request/transaction manager 225intercepts a data request by an application on the device 250, the localrepository 285 can be queried to determine if there is any locallystored response, and also determine whether the response is valid. Whena valid response is available in the local cache 285, the response canbe provided to the application on the device 250 without the device 250needing to access the cellular network.

If a valid response is not available, the local proxy 275 can query aremote proxy (e.g., the server proxy 325 of FIG. 3) to determine whethera remotely stored response is valid. If so, the remotely stored response(e.g., which may be stored on the server cache 135 or optional cachingserver 199 shown in the example of FIG. 1B) can be provided to themobile device, possibly without the mobile device 250 needing to accessthe cellular network, thus relieving consumption of network resources.

If a valid cache response is not available, or if cache responses areunavailable for the intercepted data request, the local proxy 275, forexample, the caching policy manager 245, can send the data request to aremote proxy (e.g., server proxy 325 of FIG. 3) which forwards the datarequest to a content source (e.g., application server/content provider110 of FIG. 1) and a response from the content source can be providedthrough the remote proxy, as will be further described in thedescription associated with the example host server 300 of FIG. 3. Thecache policy manager 245 can manage or process requests that use avariety of protocols, including but not limited to HTTP, HTTPS, IMAP,POP, SMTP and/or ActiveSync. The caching policy manager 245 can locallystore responses for data requests in the local database 285 as cacheentries, for subsequent use in satisfying same or similar data requests.The manager 245 can request that the remote proxy monitor responses forthe data request, and the remote proxy can notify the device 250 when anunexpected response to the data request is detected. In such an event,the cache policy manager 245 can erase or replace the locally storedresponse(s) on the device 250 when notified of the unexpected response(e.g., new data, changed data, additional data, different response,etc.) to the data request. In one embodiment, the caching policy manager245 is able to detect or identify the protocol used for a specificrequest, including but not limited to HTTP, HTTPS, IMAP, POP, SMTPand/or ActiveSync. In one embodiment, application specific handlers(e.g., via the application protocol module 246 of the manager 245) onthe local proxy 275 allows for optimization of any protocol that can beport mapped to a handler in the distributed proxy (e.g., port mapped onthe proxy server 325 in the example of FIG. 3).

In one embodiment, the local proxy 275 notifies the remote proxy suchthat the remote proxy can monitor responses received for the datarequest from the content source for changed results prior to returningthe result to the device 250, for example, when the data request to thecontent source has yielded same results to be returned to the mobiledevice. In general, the local proxy 275 can simulate application serverresponses for applications on the device 250, using locally cachedcontent. This can prevent utilization of the cellular network fortransactions where new/changed/different data is not available, thusfreeing up network resources and preventing network congestion.

In one embodiment, the local proxy 275 includes an application behaviordetector 236 to track, detect, observe, monitor, applications (e.g.,proxy aware and/or unaware applications 210 and 220) accessed orinstalled on the device 250. Application behaviors, or patterns indetected behaviors (e.g., via the pattern detector 237) of one or moreapplications accessed on the device 250 can be used by the local proxy275 to optimize traffic in a wireless network needed to satisfy the dataneeds of these applications.

For example, based on detected behavior of multiple applications, thetraffic shaping engine 255 can align content requests made by at leastsome of the applications over the network (wireless network) (e.g., viathe alignment module 256). The alignment module can delay or expeditesome earlier received requests to achieve alignment. When requests arealigned, the traffic shaping engine 255 can utilize the connectionmanager to poll over the network to satisfy application data requests.Content requests for multiple applications can be aligned based onbehavior patterns or rules/settings including, for example, contenttypes requested by the multiple applications (audio, video, text, etc.),mobile device parameters, and/or network parameters/traffic conditions,network service provider constraints/specifications, etc.

In one embodiment, the pattern detector 237 can detect recurrences inapplication requests made by the multiple applications, for example, bytracking patterns in application behavior. A tracked pattern caninclude, detecting that certain applications, as a background process,poll an application server regularly, at certain times of day, oncertain days of the week, periodically in a predictable fashion, with acertain frequency, with a certain frequency in response to a certaintype of event, in response to a certain type user query, frequency thatrequested content is the same, frequency with which a same request ismade, interval between requests, applications making a request, or anycombination of the above, for example.

Such recurrences can be used by traffic shaping engine 255 to offloadpolling of content from a content source (e.g., from an applicationserver/content provider 110 of FIG. 1) that would result from theapplication requests that would be performed at the mobile device 250 tobe performed instead, by a proxy server (e.g., proxy server 125 of FIG.1B or proxy server 325 of FIG. 3) remote from the device 250. Trafficengine 255 can decide to offload the polling when the recurrences matcha rule. For example, there are multiple occurrences or requests for thesame resource that have exactly the same content, or returned value, orbased on detection of repeatable time periods between requests andresponses such as a resource that is requested at specific times duringthe day. The offloading of the polling can decrease the amount ofbandwidth consumption needed by the mobile device 250 to establish awireless (cellular) connection with the content source for repetitivecontent polls.

As a result of the offloading of the polling, locally cached contentstored in the local cache 285 can be provided to satisfy data requestsat the device 250, when content change is not detected in the polling ofthe content sources. As such, when data has not changed, applicationdata needs can be satisfied without needing to enable radio use oroccupying cellular bandwidth in a wireless network. When data haschanged, or when data is different, and/or new data has been received,the remote entity to which polling is offloaded, can notify the device250. The remote entity may be the host server 300 as shown in theexample of FIG. 3.

In one embodiment, the local proxy 275 can mitigate the need/use ofperiodic keep alive messages (heartbeat messages) to maintain TCP/IPconnections, which can consume significant amounts of power thus havingdetrimental impacts on mobile device battery life. The connectionmanager 265 in the local proxy (e.g., the heartbeat manager 267) candetect, identify, and intercept any or all heartbeat (keep-alive)messages being sent from applications.

The heartbeat manager 267 can prevent any or all of these heartbeatmessages from being sent over the cellular, or other network, andinstead rely on the server component of the distributed proxy system(e.g., shown in FIG. 1B) to generate the and send the heartbeat messagesto maintain a connection with the backend (e.g., app server/provider 110in the example of FIG. 1).

The local proxy 275 generally represents any one or a portion of thefunctions described for the individual managers, modules, and/orengines. The local proxy 275 and device 250 can include additional orless components; more or less functions can be included, in whole or inpart, without deviating from the novel art of the disclosure.

FIG. 3 depicts a block diagram illustrating an example of server-sidecomponents in a distributed proxy and cache system residing on a hostserver 300 that manages traffic in a wireless network for resourceconservation.

The host server 300 generally includes, for example, a network interface308 and/or one or more repositories 312, 314, 316. Note that server 300may be any portable/mobile or non-portable device, server, cluster ofcomputers and/or other types of processing units (e.g., any number of amachine shown in the example of FIG. 11) able to receive, transmitsignals to satisfy data requests over a network including any wired orwireless networks (e.g., WiFi, cellular, Bluetooth, etc.).

The network interface 308 can include networking module(s) or devices(s)that enable the server 300 to mediate data in a network with an entitythat is external to the host server 300, through any known and/orconvenient communications protocol supported by the host and theexternal entity. Specifically, the network interface 308 allows theserver 308 to communicate with multiple devices including mobile phonedevices 350, and/or one or more application servers/content providers310.

The host server 300 can store information about connections (e.g.,network characteristics, conditions, types of connections, etc.) withdevices in the connection metadata repository 312. Additionally, anyinformation about third party application or content providers can alsobe stored in 312. The host server 300 can store information aboutdevices (e.g., hardware capability, properties, device settings, devicelanguage, network capability, manufacturer, device model, OS, OSversion, etc.) in the device information repository 314. Additionally,the host server 300 can store information about network providers andthe various network service areas in the network service providerrepository 316.

The communication enabled by 308 allows for simultaneous connections(e.g., including cellular connections) with devices 350 and/orconnections (e.g., including wired/wireless, HTTP, Internet connections,LAN, Wifi, etc.) with content servers/providers 310, to manage thetraffic between devices 350 and content providers 310, for optimizingnetwork resource utilization and/or to conserver power (battery)consumption on the serviced devices 350. The host server 300 cancommunicate with mobile devices 350 serviced by different networkservice providers and/or in the same/different network service areas.The host server 300 can operate and is compatible with devices 350 withvarying types or levels of mobile capabilities, including by way ofexample but not limitation, 1G, 2G, 2G transitional (2.5G, 2.75G), 3G(IMT-2000), 3G transitional (3.5G, 3.75G, 3.9G), 4G (IMT-advanced), etc.

In general, the network interface 308 can include one or more of anetwork adaptor card, a wireless network interface card (e.g., SMSinterface, WiFi interface, interfaces for various generations of mobilecommunication standards including but not limited to 1G, 2G, 3G, 3.5G,4G type networks such as, LTE, WiMAX, etc.,), Bluetooth, WiFi, or anyother network whether or not connected via a a router, an access point,a wireless router, a switch, a multilayer switch, a protocol converter,a gateway, a bridge, bridge router, a hub, a digital media receiver,and/or a repeater.

The host server 300 can further include, server-side components of thedistributed proxy and cache system which can include, a proxy server 325and a server cache 335. In one embodiment, the server proxy 325 caninclude an HTTP access engine 345, a caching policy manager 355, a proxycontroller 365, a traffic shaping engine 375, a new data detector 386,and/or a connection manager 395.

The HTTP access engine 345 may further include a heartbeat manager 346,the proxy controller 365 may further include a data invalidator module366, the traffic shaping engine 375 may further include a controlprotocol 276 and a batching module 377. Additional or lesscomponents/modules/engines can be included in the proxy server 325 andeach illustrated component.

As used herein, a “module,” “a manager,” a “handler,” a “detector,” an“interface,” a “controller,” or an “engine” includes a general purpose,dedicated or shared processor and, typically, firmware or softwaremodules that are executed by the processor. Depending uponimplementation-specific or other considerations, the module, manager,handler, or engine can be centralized or its functionality distributed.The module, manager, handler, or engine can include general or specialpurpose hardware, firmware, or software embodied in a computer-readable(storage) medium for execution by the processor. As used herein, acomputer-readable medium or computer-readable storage medium is intendedto include all mediums that are statutory (e.g., in the United States,under 35 U.S.C. 101), and to specifically exclude all mediums that arenon-statutory in nature to the extent that the exclusion is necessaryfor a claim that includes the computer-readable (storage) medium to bevalid. Known statutory computer-readable mediums include hardware (e.g.,registers, random access memory (RAM), non-volatile (NV) storage, toname a few), but may or may not be limited to hardware.

In the example of a device (e.g., mobile device 350) making anapplication or content request to an app server or content provider 310,the request may be intercepted and routed to the proxy server 325, whichis coupled to the device 350 and the provider 310. Specifically, theproxy server is able to communicate with the local proxy (e.g., proxy175 and 275 of the examples of FIG. 1 and FIG. 2 respectively) of thedevice 350, the local proxy forwards the data request to the proxyserver 325 for, in some instances, further processing, and if needed,for transmission to the content server 310 for a response to the datarequest.

In such a configuration, the host 300, or the proxy server 325 in thehost server 300 can utilize intelligent information provided by thelocal proxy in adjusting its communication with the device in such amanner that optimizes use of network and device resources. For example,the proxy server 325 can identify characteristics of user activity onthe device 350 to modify its communication frequency. Thecharacteristics of user activity can be determined by, for example, theactivity/behavior awareness module 366 in the proxy controller 365, viainformation collected by the local proxy on the device 350.

In one embodiment, communication frequency can be controlled by theconnection manager 396 of the proxy server 325, for example, to adjustpush frequency of content or updates to the device 350. For instance,push frequency can be decreased by the connection manager 396 whencharacteristics of the user activity indicate that the user is inactive.In one embodiment, when the characteristics of the user activityindicate that the user is subsequently active after a period ofinactivity, the connection manager 396 can adjust the communicationfrequency with the device 350 to send data that was buffered as a resultof decreased communication frequency, to the device 350.

In addition, the proxy server 325 includes priority awareness of variousrequests, transactions, sessions, applications, and/or specific events.Such awareness can be determined by the local proxy on the device 350and provided to the proxy server 325. The priority awareness module 367of the proxy server 325 can generally assess the priority (e.g.,including time-criticality, time-sensitivity, etc.) of various events orapplications; additionally, the priority awareness module 367 can trackpriorities determined by local proxies of devices 350.

In one embodiment, through priority awareness, the connection manager395 can further modify communication frequency (e.g., use or radio ascontrolled by the radio controller 396) of the server 300 with thedevices 350. For example, the server 300 can notify the device 350, thusrequesting use of the radio if it is not already in use, when data orupdates of an importance/priority level which meets a criteria becomesavailable to be sent.

In one embodiment, the proxy server 325 can detect multiple occurrencesof events (e.g., transactions, content, data received fromserver/provider 310) and allow the events to accumulate for batchtransfer to device 350. Batch transfer can be cumulated and transfer ofevents can be delayed based on priority awareness and/or useractivity/application behavior awareness, as tracked by modules 366and/or 367. For example, batch transfer of multiple events (of a lowerpriority) to the device 350 can be initiated by the batching module 377when an event of a higher priority (meeting a threshold or criteria) isdetected at the server 300. In addition, batch transfer from the server300 can be triggered when the server receives data from the device 350,indicating that the device radio is already in use and is thus on. Inone embodiment, the proxy server 324 can order the each messages/packetsin a batch for transmission based on event/transaction priority, suchthat higher priority content can be sent first, in case connection islost or the battery dies, etc.

In one embodiment, the server 300 caches data (e.g., as managed by thecaching policy manager 355) such that communication frequency over anetwork (e.g., cellular network) with the device 350 can be modified(e.g., decreased). The data can be cached, for example in the servercache 335, for subsequent retrieval or batch sending to the device 350to potentially decrease the need to turn on the device 350 radio. Theserver cache 335 can be partially or wholly internal to the host server300, although in the example of FIG. 3, it is shown as being external tothe host 300. In some instances, the server cache 335 may be the same asand/or integrated in part or in whole with another cache managed byanother entity (e.g., the optional caching proxy server 199 shown in theexample of FIG. 1B), such as being managed by an applicationserver/content provider 110, a network service provider, or anotherthird party.

In one embodiment, content caching is performed locally on the device350 with the assistance of host server 300. For example, proxy server325 in the host server 300 can query the application server/provider 310with requests and monitor changes in responses. When changed, differentor new responses are detected (e.g., by the new data detector 347), theproxy server 325 can notify the mobile device 350, such that the localproxy on the device 350 can make the decision to invalidate (e.g.,indicated as out-dated) the relevant cache entries stored as anyresponses in its local cache. Alternatively, the data invalidator module368 can automatically instruct the local proxy of the device 350 toinvalidate certain cached data, based on received responses from the appapplication server/provider 310. The cached data is marked as invalid,and can get replaced or deleted when new content is received from thecontent server 310.

Note that data change can be detected by the detector 347 in one or moreways. For example, the server/provider 310 can notify the host server300 upon a change. The change can also be detected at the host server300 in response to a direct poll of the source server/provider 310. Insome instances, the proxy server 325 can in addition, pre-load the localcache on the device 350 with the new/updated/changed/different data.This can be performed when the host server 300 detects that the radio onthe mobile device is already in use, or when the server 300 hasadditional content/data to be sent to the device 350.

One or more the above mechanisms can be implemented simultaneously oradjusted/configured based on application (e.g., different policies fordifferent servers/providers 310). In some instances, the sourceprovider/server 310 may notify the host 300 for certain types of events(e.g., events meeting a priority threshold level). In addition, theprovider/server 310 may be configured to notify the host 300 at specifictime intervals, regardless of event priority.

In one embodiment, the proxy server 325 of the host 300 canmonitor/track responses received for the data request from the contentsource for changed results prior to returning the result to the mobiledevice, such monitoring may be suitable when data request to the contentsource has yielded same results to be returned to the mobile device,thus preventing network/power consumption from being used when nonew/changes are made to a particular requested. The local proxy of thedevice 350 can instruct the proxy server 325 to perform such monitoringor the proxy server 325 can automatically initiate such a process uponreceiving a certain number of the same responses (e.g., or a number ofthe same responses in a period of time) for a particular request.

In one embodiment, the server 300, for example, through theactivity/behavior awareness module 366, is able to identify or detectuser activity, at a device that is separate from the mobile device 350.For example, the module 366 may detect that a user's message inbox(e.g., email or types of inbox) is being accessed. This can indicatethat the user is interacting with his/her application using a deviceother than the mobile device 350 and may not need frequent updates, ifat all.

The server 300, in this instance, can thus decrease the frequency withwhich new, different, changed, or updated content is sent to the mobiledevice 350, or eliminate all communication for as long as the user isdetected to be using another device for access. Such frequency decreasemay be application specific (e.g., for the application with which theuser is interacting with on another device), or it may be a generalfrequency decrease (e.g., since the user is detected to be interactingwith one server or one application via another device, he/she could alsouse it to access other services) to the mobile device 350.

In one embodiment, the host server 300 is able to poll content sources310 on behalf of devices 350 to conserve power or battery consumption ondevices 350. For example, certain applications on the mobile device 350can poll its respective server 310 in a predictable recurring fashion.Such recurrence or other types of application behaviors can be trackedby the activity/behavior module 366 in the proxy controller 365. Thehost server 300 can thus poll content sources 310 for applications onthe mobile device 350, that would otherwise be performed by the device350 through a wireless (e.g., including cellular connectivity). The hostserver can poll the sources 310 for new, different, updated, or changeddata by way of the HTTP access engine 345 to establish HTTP connectionor by way of radio controller 396 to connect to the source 310 over thecellular network. When new, different, updated, or changed data isdetected, the new data detector can notify the device 350 that such datais available and/or provide the new/changed data to the device 350.

In one embodiment, the connection manager 395 determines that the mobiledevice 350 is unavailable (e.g., the radio is turned off) and utilizesSMS to transmit content to the device 350, for instance via the SMSCshown in the example of FIG. 1B. SMS is used to transmit invalidationmessages, batches of invalidation messages, or even content in the casethe content is small enough to fit into just a few (usually one or two)SMS messages. This avoids the need to access the radio channel to sendoverhead information. The host server 300 can use SMS for certaintransactions or responses having a priority level above a threshold orotherwise meeting a criteria. The server 300 can also utilize SMS as anout-of-band trigger to maintain or wake-up an IP connection as analternative to maintaining an always-on IP connection.

In one embodiment, the connection manager 395 in the proxy server 325(e.g., the heartbeat manager 398) can generate and/or transmit heartbeatmessages on behalf of connected devices 350, to maintain a backendconnection with a provider 310 for applications running on devices 350.

For example, in the distributed proxy system, local cache on the device350 can prevent any or all heartbeat messages needed to maintain TCP/IPconnections required for applications, from being sent over thecellular, or other network, and instead rely on the proxy server 325 onthe host server 300 to generate and/or send the heartbeat messages tomaintain a connection with the backend (e.g., app server/provider 110 inthe example of FIG. 1). The proxy server can generate the keep-alive(heartbeat) messages independent of the operations of the local proxy onthe mobile device.

The repositories 312, 314, and/or 316 can additionally store software,descriptive data, images, system information, drivers, and/or any otherdata item utilized by other components of the host server 300 and/or anyother servers for operation. The repositories may be managed by adatabase management system (DBMS), for example but not limited to,Oracle, DB2, Microsoft Access, Microsoft SQL Server, PostgreSQL, MySQL,FileMaker, etc.

The repositories can be implemented via object-oriented technologyand/or via text files, and can be managed by a distributed databasemanagement system, an object-oriented database management system(OODBMS) (e.g., ConceptBase, FastDB Main Memory Database ManagementSystem, JDOInstruments, ObjectDB, etc.), an object-relational databasemanagement system (ORDBMS) (e.g., Informix, OpenLink Virtuoso, VMDS,etc.), a file system, and/or any other convenient or known databasemanagement package.

FIG. 4 depicts a diagram showing how data requests from a mobile device450 to an application server/content provider 496 in a wireless networkcan be coordinated by a distributed proxy system 460 in a manner suchthat network and battery resources are conserved through using contentcaching and monitoring performed by the distributed proxy system 460.

In satisfying application or client requests on a mobile device 450without the distributed proxy system 460, the mobile device 450, or thesoftware widget executing on the device 450 performs a data request 402(e.g., an HTTP GET, POST, or other request) directly to the applicationserver 495 and receives a response 404 directly from the server/provider495. If the data has been updated, the widget on the mobile device 450can refreshes itself to reflect the update and waits for small period oftime and initiates another data request to the server/provider 495.

In one embodiment, the requesting client or software widget 455 on thedevice 450 can utilize the distributed proxy system 460 in handling thedata request made to server/provider 495. In general, the distributedproxy system 460 can include a local proxy 465 (which is typicallyconsidered a client-side component of the system 460 and can reside onthe mobile device 450), a caching proxy (475, considered a server-sidecomponent 470 of the system 460 and can reside on the host server 485 orbe wholly or partially external to the host server 485), a host server485. The local proxy 465 can be connected to the proxy 475 and hostserver 485 via any network or combination of networks.

When the distributed proxy system 460 is used for data/applicationrequests, the widget 455 can perform the data request 406 via the localproxy 465. The local proxy 465, can intercept the requests made bydevice applications, and can identify the connection type of the request(e.g., an HTTP get request or other types of requests). The local proxy465 can then query the local cache for any previous information aboutthe request (e.g., to determine whether a locally stored response isavailable and/or still valid). If a locally stored response is notavailable or if there is an invalid response stored, the local proxy 465can update or store information about the request, the time it was made,and any additional data, in the local cache. The information can beupdated for use in potentially satisfying subsequent requests.

The local proxy 465 can then send the request to the host server 485 andthe server 485 can perform the request 406 and returns the results inresponse 408. The local proxy 465 can store the result and in addition,information about the result and returns the result to the requestingwidget 455.

In one embodiment, if the same request has occurred multiple times(within a certain time period) and it has often yielded same results,the local proxy 465 can notify 410 the server 485 that the requestshould be monitored (e.g., steps 412 and 414) for result changes priorto returning a result to the local proxy 465 or requesting widget 455.

In one embodiment, if a request is marked for monitoring, the localproxy 465 can now store the results into the local cache. Now, when thedata request 416, for which a locally response is available, is made bythe widget 455 and intercepted at the local proxy 465, the proxy 465 canreturn the response 418 from the local cache without needing toestablish a connection communication over the wireless network. In oneembodiment, the response is stored at the server proxy in the servercache for subsequent use in satisfying same or similar data requests.The response can be stored in lieu of or in addition to storage on thelocal cache on the mobile device.

In addition, the server proxy performs the requests marked formonitoring 420 to determine whether the response 422 for the givenrequest has changed. In general, the host server 485 can perform thismonitoring independently of the widget 455 or local proxy 465operations. Whenever an unexpected response 422 is received for arequest, the server 485 can notify the local proxy 465 that the responsehas changed (e.g., the invalidate notification in step 424) and that thelocally stored response on the client should be erased or replaced witha new (e.g., changed or different) response.

In this case, a subsequent data request 426 by the widget 455 from thedevice 450 results in the data being returned from host server 485(e.g., via the caching proxy 475). Thus, through utilizing thedistributed proxy system 460 the wireless (cellular) network isintelligently used when the content/data for the widget or softwareapplication 455 on the mobile device 450 has actually changed. As such,the traffic needed to check for the changes to application data is notperformed over the wireless (cellular) network. This reduces the amountof generated network traffic and shortens the total time and the numberof times the radio module is powered up on the mobile device 450, thusreducing battery consumption, and in addition, frees up networkbandwidth.

FIG. 5 depicts a diagram showing one example process for implementing ahybrid IP and SMS power saving mode on a mobile device 550 using adistributed proxy and cache system (e.g., such as the distributed systemshown in the example of FIG. 1B).

In step 502, the local proxy (e.g., proxy 175 in the example of FIG. 1B)monitors the device for user activity. When the user is determined to beactive, server push is active. For example, always-on-push IP connectioncan be maintained and if available, SMS triggers can be immediately sentto the mobile device 550 as it becomes available.

In process 504, after the user has been detected to be inactive or idleover a period of time (e.g., the example is shown for a period ofinactivity of 20 min.), the local proxy can adjust the device to go intothe power saving mode. In the power saving mode, when the local proxyreceives a message or a correspondence from a remote proxy (e.g., theserver proxy 135 in the example of FIG. 1B) on the server-side of thedistributed proxy and cache system, the local proxy can respond with acall indicating that the device 550 is currently in power save mode(e.g., via a power save remote procedure call). In some instances, thelocal proxy can take the opportunity to notify multiple accounts orproviders (e.g., 510A, and 510B) of the current power save status (e.g.,timed to use the same radio power-on event).

In one embodiment, the response from the local proxy can include a time(e.g., the power save period) indicating to the remote proxy (e.g.,server proxy 135) and/or the app server/providers 510A/B when the device550 is next able to receive changes or additional data. A default powersavings period can be set by the local proxy.

In one embodiment, if new, change, or different data or event isreceived before the end of any one power saving period, then the waitperiod communicated to the servers 510A/B can be the existing period,rather than an incremented time period. In response, the remote proxyserver, upon receipt of power save notification from the device 550, canstop sending changes (data or SMSs) for the period of time requested(the wait period). At the end of the wait period, any notificationsreceived can be acted upon and changes sent to the device 550, forexample, as a single batched event or as individual events. If nonotifications come in, then push can be resumed with the data or an SMSbeing sent to the device 550. The proxy server can time the poll or datacollect event to optimize batch sending content to the mobile device 550to increase the chance that the client will receive data at the nextradio power on event.

Note that the wait period can be updated in operation in real time toaccommodate operating conditions. For example, the local proxy canadjust the wait period on the fly to accommodate the different delaysthat occur in the system.

Detection of user activity 512 at the device 550 causes the power savemode to be exited. When the device 550 exits power save mode, it canbegin to receive any changes associated with any pending notifications.If a power saving period has expired, then no power save cancel call maybe needed as the proxy server will already be in traditional pushoperation mode.

In one embodiment, power save mode is not applied when the device 550 isplugged into a charger. This setting can be reconfigured or adjusted bythe user or another party. In general, the power save mode can be turnedon and off, for example, by the user via a user interface on device 550.In general, timing of power events to receive data can be synced withany power save calls to optimize radio use.

FIG. 6 depicts a flow chart illustrating example processes through whichcontext awareness is used for traffic management.

In process 602, characteristics of user activity on the mobile deviceare detected. In process 604, behavior of the mobile device is adjustedto optimize battery consumption on the mobile device. The adjustment ofthe behavior of the mobile device can include, for example, adjustingthe use of radio on the mobile device, as in process 606. In addition,in process 608, the radio can be switched on/off. Further, the radio canalso be placed in low power or high power radio mode in process 612.

In addition, data can be cached at the mobile device in process 610 toadjust radio use. Data may also be cached at the server in wirelesscommunication with the mobile device to in order to modify communicationfrequency with the mobile device. In one embodiment, in response todetection of user activities on the mobile device, the characteristicsof the user activity can be communicated from the mobile device to theserver, in process 614.

Similarly, based on the user activity characteristics, communicationfrequency of a server with the mobile device can be adjusted in process616. For example, data push frequency from the server to the mobiledevice is decreased, in process 618. Similarly, data can be cached atthe server in process 620 to adjust communication frequency.

In addition, characteristics of transactions occurring at the mobiledevice can also be used to locally adjust radio use on the mobiledevice. For example, characteristics of transactions include timecriticality of the transactions and that a low power radio mode or ahigh power radio mode can be selected for use on the mobile device basedon the time criticality of the transactions. Additionally, a low powerradio mode or a high power radio mode is selected for use on the mobiledevice based on amount of data to be transferred in the transactions.

FIG. 7 depicts a flow chart illustrating an example process for managingtraffic in a wireless network based on user interaction with a mobiledevice.

In process 702, it is determined if the user actively interacting withthe mobile device. If the user is actively interacting with the mobiledevice, the mobile device 714 can be notified, as in process 714, of newdata or changes in data.

If not, in process 704, device can wait to send low prioritytransactions until after the user activity has been dormant for a periodof time, for example, low priority transactions include, one or more of,updating message status as being read, unread, and deleting of messages.In addition, low priority transactions can be sent when a higherpriority transaction needs to be sent, thus utilizing the same radiopower-up event. Low priority transactions can generally includeapplication maintenance events, events not requested by a user, eventsscheduled to be in the future, such as, by way of example but notlimitation, one or more of, updating message status as being read,unread, and deleting of messages.

Similarly, if the user is not active, data push frequency from theserver can be decreased in process 706. In process 708, if the user isdetected to be subsequently active after being inactive, then databuffered as a result of decreased communication frequency can be sent tothe mobile device, in process 710.

Alternatively, even if the user is not actively interacting with themobile device, an assessment can be made as to whether high importancedata (e.g., data importance or priority meeting a threshold level) ispending to be sent to the mobile device, in process 712. If so, themobile device is notified, in process 714. As a result of thenotification, the mobile device radio can be enabled such that the highimportance data can be sent to the mobile device. In general, theimportance of data can be determined based on one or more of severalcriteria including but not limited to, application to which the data isrelevant, time criticality, and time sensitivity, etc. An example of atime critical transaction includes a transaction resulting from auser-initiated data transfer.

FIG. 8 depicts a flow chart illustrating another example process formanaging traffic in a wireless network based on user interaction with amobile device.

In process 802, user activity is detected at a device separate from amobile device. In process 804, it is determined whether the useractivity at the device is able to access the same data, content, orapplication, which is also setup to be delivered to or accessed at themobile device. For example, user activity at the device separate fromthe mobile device can include user access of an email inbox or othertypes applications via an interface other than that accessed from themobile device (e.g., from a laptop or desktop computer). Since the useris now accessing the client from another device, the user now may notneed content to be updated as frequently on the mobile device. Thus, inprocess 806, communication frequency from a server to the mobile deviceis decreased.

FIG. 9 depicts a flow chart illustrating an example process for managingtraffic initiated from a mobile device in a wireless network throughbatching of event transfer based on event priority.

In process 902, multiple occurrences of events having a first prioritytype initiated on the mobile device are detected.

In process 904, the mobile device cumulates multiple occurrences ofevents having a first priority type initiated on the mobile device,before transfer over the wireless network. The first priority type canbe a generally low priority type indicating a request or update which isnot time critical or time sensitive. Thus, if the device radio iscurrently off, the radio may not be immediately turned on to transmitindividual events which are not time critical, until other triggeringevents occur or other criteria is met.

For example, in process 906, occurrence of an event of a second prioritytype is detected, which can trigger batch transfer of the cumulatedevents to a server in wireless communication with the mobile device, inprocess 916, where the second priority type is of a higher priority thanthe first priority type.

In another example, in process 908, data transfer from the server cantrigger the radio use on the mobile device, which can trigger batchtransfer of the cumulated events to a server in wireless communicationwith the mobile device, in process 916. Alternatively, in process 910,after a period of time elapses, batch transfer of the cumulated eventsto a server in wireless communication with the mobile device can betriggered, in process 916.

In one embodiment, in process 912, a user trigger (e.g., a manual syncrequest) or in response to a user prompt, batch transfer of thecumulated events to a server in wireless communication with the mobiledevice can be triggered, in process 916. In process 914, when it isdetected that an application is exited and/or moved into the background,batch transfer of the cumulated events to a server in wirelesscommunication with the mobile device can be triggered, in process 916.

FIG. 10 depicts a flow chart illustrating another example process formanaging traffic initiated remotely from a mobile device in a wirelessnetwork through batching of event transfer based on event priority.

In process 1002, multiple occurrences of events having a first prioritytype are detected at a server wirelessly coupled to a mobile device. Inprocess 1004, the server cumulates the multiple occurrences of eventshaving a first priority type, before transfer over the wireless network.The first priority type may not be of a high priority type or having apriority exceeding a certain threshold level indicating a level or timecriticality or urgency. Thus, such events, upon occurrence, may not beimmediately transferred to the mobile device, until certain criterion ismet, or until one or more triggering events occur.

For example, in process 1006, occurrence of an event of a secondpriority type is detected at the server, which can trigger batchtransfer of the cumulated events to the mobile device, in process 1016,when the second priority type is of a higher priority than the firstpriority type. In another example, in process 1008, data transfer fromthe mobile device indicates the radio use on the mobile device, whichcan trigger batch transfer of the cumulated events to the mobile device,in process 1016.

Alternatively, in process 1010, after a period of time elapses, batchtransfer of the cumulated events to the mobile device can be triggered,in process 1016. In process 1012, a user trigger or in response to auser prompt, batch transfer of the cumulated events to the mobile devicecan be triggered, in process 1016. In process 1014, when it is detectedthat an application is exited and/or moved into the background, batchtransfer of the cumulated events to the mobile device can be triggered,in process 1016. In general, manual overrides or manual syncs can causebatch transfers to occur, either from the mobile device to the server orvice versa.

FIG. 11 shows a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed.

In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment.

The machine may be a server computer, a client computer, a personalcomputer (PC), a user device, a tablet PC, a laptop computer, a set-topbox (STB), a personal digital assistant (PDA), a cellular telephone, aniPhone, an iPad, a Blackberry, a processor, a telephone, a webappliance, a network router, switch or bridge, a console, a hand-heldconsole, a (hand-held) gaming device, a music player, any portable,mobile, hand-held device, or any machine capable of executing a set ofinstructions (sequential or otherwise) that specify actions to be takenby that machine.

While the machine-readable medium or machine-readable storage medium isshown in an exemplary embodiment to be a single medium, the term“machine-readable medium” and “machine-readable storage medium” shouldbe taken to include a single medium or multiple media (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions. The term“machine-readable medium” and “machine-readable storage medium” shallalso be taken to include any medium that is capable of storing, encodingor carrying a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresently disclosed technique and innovation.

In general, the routines executed to implement the embodiments of thedisclosure, may be implemented as part of an operating system or aspecific application, component, program, object, module or sequence ofinstructions referred to as “computer programs.” The computer programstypically comprise one or more instructions set at various times invarious memory and storage devices in a computer, and that, when readand executed by one or more processing units or processors in acomputer, cause the computer to perform operations to execute elementsinvolving the various aspects of the disclosure.

Moreover, while embodiments have been described in the context of fullyfunctioning computers and computer systems, those skilled in the artwill appreciate that the various embodiments are capable of beingdistributed as a program product in a variety of forms, and that thedisclosure applies equally regardless of the particular type of machineor computer-readable media used to actually effect the distribution.

Further examples of machine-readable storage media, machine-readablemedia, or computer-readable (storage) media include, but are not limitedto, recordable type media such as volatile and non-volatile memorydevices, floppy and other removable disks, hard disk drives, opticaldisks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital VersatileDisks, (DVDs), etc.), among others, and transmission type media such asdigital and analog communication links.

The network interface device enables the machine 1100 to mediate data ina network with an entity that is external to the host server, throughany known and/or convenient communications protocol supported by thehost and the external entity. The network interface device can includeone or more of a network adaptor card, a wireless network interfacecard, a router, an access point, a wireless router, a switch, amultilayer switch, a protocol converter, a gateway, a bridge, bridgerouter, a hub, a digital media receiver, and/or a repeater.

The network interface device can include a firewall which can, in someembodiments, govern and/or manage permission to access/proxy data in acomputer network, and track varying levels of trust between differentmachines and/or applications. The firewall can be any number of moduleshaving any combination of hardware and/or software components able toenforce a predetermined set of access rights between a particular set ofmachines and applications, machines and machines, and/or applicationsand applications, for example, to regulate the flow of traffic andresource sharing between these varying entities. The firewall mayadditionally manage and/or have access to an access control list whichdetails permissions including for example, the access and operationrights of an object by an individual, a machine, and/or an application,and the circumstances under which the permission rights stand.

Other network security functions can be performed or included in thefunctions of the firewall, can be, for example, but are not limited to,intrusion-prevention, intrusion detection, next-generation firewall,personal firewall, etc. without deviating from the novel art of thisdisclosure.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof, means any connection or coupling,either direct or indirect, between two or more elements; the coupling ofconnection between the elements can be physical, logical, or acombination thereof. Additionally, the words “herein,” “above,” “below,”and words of similar import, when used in this application, shall referto this application as a whole and not to any particular portions ofthis application. Where the context permits, words in the above DetailedDescription using the singular or plural number may also include theplural or singular number respectively. The word “or,” in reference to alist of two or more items, covers all of the following interpretationsof the word: any of the items in the list, all of the items in the list,and any combination of the items in the list.

The above detailed description of embodiments of the disclosure is notintended to be exhaustive or to limit the teachings to the precise formdisclosed above. While specific embodiments of, and examples for, thedisclosure are described above for illustrative purposes, variousequivalent modifications are possible within the scope of thedisclosure, as those skilled in the relevant art will recognize. Forexample, while processes or blocks are presented in a given order,alternative embodiments may perform routines having steps, or employsystems having blocks, in a different order, and some processes orblocks may be deleted, moved, added, subdivided, combined, and/ormodified to provide alternative or subcombinations. Each of theseprocesses or blocks may be implemented in a variety of different ways.Also, while processes or blocks are at times shown as being performed inseries, these processes or blocks may instead be performed in parallel,or may be performed at different times. Further, any specific numbersnoted herein are only examples: alternative implementations may employdiffering values or ranges.

The teachings of the disclosure provided herein can be applied to othersystems, not necessarily the system described above. The elements andacts of the various embodiments described above can be combined toprovide further embodiments.

Any patents and applications and other references noted above, includingany that may be listed in accompanying filing papers, are incorporatedherein by reference. Aspects of the disclosure can be modified, ifnecessary, to employ the systems, functions, and concepts of the variousreferences described above to provide yet further embodiments of thedisclosure.

These and other changes can be made to the disclosure in light of theabove Detailed Description. While the above description describescertain embodiments of the disclosure, and describes the best modecontemplated, no matter how detailed the above appears in text, theteachings can be practiced in many ways. Details of the system may varyconsiderably in its implementation details, while still beingencompassed by the subject matter disclosed herein. As noted above,particular terminology used when describing certain features or aspectsof the disclosure should not be taken to imply that the terminology isbeing redefined herein to be restricted to any specific characteristics,features, or aspects of the disclosure with which that terminology isassociated. In general, the terms used in the following claims shouldnot be construed to limit the disclosure to the specific embodimentsdisclosed in the specification, unless the above Detailed Descriptionsection explicitly defines such terms. Accordingly, the actual scope ofthe disclosure encompasses not only the disclosed embodiments, but alsoall equivalent ways of practicing or implementing the disclosure underthe claims.

While certain aspects of the disclosure are presented below in certainclaim forms, the inventors contemplate the various aspects of thedisclosure in any number of claim forms. For example, while only oneaspect of the disclosure is recited as a means-plus-function claim under35 U.S.C. §112, ¶6, other aspects may likewise be embodied as ameans-plus-function claim, or in other forms, such as being embodied ina computer-readable medium. (Any claims intended to be treated under 35U.S.C. §112, ¶6 will begin with the words “means for”.) Accordingly, theapplicant reserves the right to add additional claims after filing theapplication to pursue such additional claim forms for other aspects ofthe disclosure.

1. A method of conserving battery consumption on a mobile device, themethod, comprising: using characteristics of user activity on the mobiledevice to locally adjust behavior of the mobile device to optimizebattery consumption on the mobile device; further using thecharacteristics of the user activity on the mobile device to cause aserver in wireless communication with the mobile device to modifycommunication frequency with the mobile device.
 2. The method of claim1, wherein, the adjustment of the behavior of the mobile devicecomprises adjusting use of radio on the mobile device.
 3. The method ofclaim 1, wherein, the modifying of the communication frequency with themobile device includes decreasing data push frequency from the server,when the characteristics of the user activity indicate that the user isinactive.
 4. The method of claim 3, wherein, when the characteristics ofthe user activity indicate that the user is subsequently active, themodifying of the communication frequency with the mobile device includessending data buffered as a result of decreased communication frequency,to the mobile device.
 5. The method of claim 1, wherein, the modifyingof the communication frequency with the mobile device comprises sendingnotifications to the mobile device when data of higher importance isavailable to be sent to the mobile device.
 6. The method of claim 5,wherein, importance of data is determined based on criteria includingone or more of, application to which the data is relevant, timecriticality, and time sensitivity.
 7. The method of claim 1, wherein,the using the characteristics of the user activity includes waiting tosend low priority transactions from the mobile device until after theuser activity has been dormant for a period of time.
 8. The method ofclaim 7, wherein, low priority transactions include, one or more of,updating message status as being read, unread, and deleting of messages.9. The method of claim 7, further comprising, identifying transactionson the mobile device as being the low priority transactions; cumulatingthe low priority transactions for batch transfer from the mobile device.10. The method of claim 1, further comprising, communicating thecharacteristics of the user activity from the mobile device to theserver.
 11. The method of claim 1, further comprising, usingcharacteristics of transactions occurring at the mobile device tolocally adjust radio use on the mobile device.
 12. The method of claim12, wherein, the characteristics of transactions include timecriticality of the transactions.
 13. The method of claim 12, wherein, alow power radio mode or a high power radio mode is selected for use onthe mobile device based on the time criticality of the transactions. 14.The method of claim 11, wherein, a low power radio mode or a high powerradio mode is selected for use on the mobile device based on amount ofdata to be transferred in the transactions.
 15. The method of claim 12,wherein, the time critical transaction includes a transaction resultingfrom a user-initiated data transfer.
 16. The method of claim 1, furthercomprising, caching data at the mobile device to locally adjust radiouse on the mobile device.
 17. The method of claim 1, further comprising,caching data at the server in wireless communication with the mobiledevice to in order to modify communication frequency with the mobiledevice.
 18. The method of claim 1, further comprising, decreasingcommunication frequency from the server to the mobile device whendetecting user activity via a device separate from the mobile device.19. A method of conserving battery consumption on a mobile device, themethod, comprising: decreasing communication frequency from a server tothe mobile device when detecting user activity at a device separate fromthe mobile device; wherein, the user activity at the device is able toaccess the same data also able to be delivered to the mobile device;wherein the server is in wireless configuration with the mobile device.20. The method of claim 19, wherein, user activity at the devicecomprises user access of an email inbox via an interface other than thataccessed from the mobile device.
 21. The method of claim 19, wherein,user activity is detected through determining the presence of backlight,key presses, or touch screen activities.
 22. A method of optimizingradio use on a mobile device, the method, comprising: detecting multipleoccurrences of events having a first priority type initiated on themobile device; cumulating the multiple occurrences of events having thefirst priority type, at least some of which occurred at differentinstances in time for batched transfer to a server in wirelesscommunication with the mobile device.
 23. The method of claim 22,wherein, the batch transfer occurs when an event of a second prioritytype is detected at the mobile device; wherein the second priority typeis of higher priority than the first priority type.
 24. The method ofclaim 22, wherein, the batch transfer occurs when data transfer from theserver triggers the radio use.
 25. The method of claim 22, wherein, thebatched transfer occurs after a period of time.
 26. The method of claim22, wherein, the batch transferring is user configurable to be enabledor disabled.
 27. The method of claim 22, further comprising, prompting auser whether to perform the batch transfer upon detection of exiting anapplication or moving the application into the background.
 28. Themethod of claim 22, wherein, an impending pruning event on the mobiledevice does not activate radio use on the mobile device.
 29. The methodof claim 22, further comprising, pruning an inbox when the batchtransfer occurs.
 30. A method of optimizing radio use on a mobiledevice, the method, comprising: detecting multiple occurrences of eventshaving a first priority type at a server wirelessly coupled to themobile device; cumulating the multiple occurrences of events having thefirst priority type, at least some of which occurred at differentinstances in time, for batch transfer to the mobile device.
 31. Themethod of claim 30, wherein, the batch transfer occurs when an event ofa second priority type is detected at the server; wherein the secondpriority type is of higher priority than the first priority type. 32.The method of claim 30, wherein, the batch transfer is triggered whendata received from the mobile device indicates radio use on the mobiledevice.
 33. A system for improving network resource utilization andconserving battery consumption on a mobile device in a wireless network,the system, comprising: a mobile client residing on the mobile device,wherein the mobile client uses time-criticality of transactions in thewireless network to adjust radio use of the mobile device to optimizebattery use on the mobile device for conserving battery power; a proxyserver coupled to the mobile client and a source server in the wirelessnetwork; wherein, the proxy server also uses the time-criticality of thetransactions in the wireless network to throttle bandwidth incommunicating with the mobile device.
 34. The system of claim 33,wherein the mobile client uses characteristics of user activity on themobile device to locally adjust radio use of the mobile device tooptimize battery consumption on the mobile device.
 35. The system ofclaim 33, wherein, the proxy server further uses the characteristics ofthe user activity on the mobile device to modulate communicationfrequency with the mobile device.
 36. The system of claim 33, wherein,low power radio modes or high power radio modes are used on the mobiledevice based on the time criticality of the transactions; wherein, atime critical transaction includes a transaction resulting from auser-initiated data transfer.
 37. A system for improving networkresource utilization in a wireless network, the system, comprising:means for, detecting an occurrence of an event having a first prioritytype on a mobile device in the wireless network; means for, cumulatingmultiple occurrences of events having the first priority type atdifferent instances in time for batch transfer to a server in wirelesscommunication with the mobile device; means for, detecting an occurrenceof an event having a first priority type at the server; means for,cumulating multiple occurrences of events having the first priority typeat different instances in time for batch transfer to the mobile device;wherein, the second priority type is of higher priority than the firstpriority type.
 38. The system of claim 37, wherein events having thefirst priority type include, one or more of, deleting an email, markinga message as read or unread, and moving a message.
 39. The system ofclaim 37, wherein events having the second priority type include, one ormore of, receiving a message, sending a message, a request to loadadditional content or to download content, a new calendar event, atransaction to add or edit a contact, and to transaction to changing asetting.